package jp.ac.aiit.jointry.services.picture.paint.model; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.util.logging.Level; import java.util.logging.Logger; import javafx.embed.swing.SwingFXUtils; import javafx.scene.image.Image; import javafx.scene.image.PixelReader; import javafx.scene.paint.Color; import javafx.stage.FileChooser; import javax.imageio.ImageIO; public class FileManager { private static FileChooser fc = new FileChooser(); private static String targetDirectory = System.getProperty("user.home"); public static void save(String title, Image image) { refreshChooser(title); File file = fc.showSaveDialog(null); if (file == null) { return; //保存先が指定されなかった } targetDirectory = file.getParent(); try { ImageIO.write(SwingFXUtils.fromFXImage(image, null), "png", file); } catch (IOException ex) { Logger.getLogger(FileManager.class.getName()).log(Level.SEVERE, null, ex); } } public static Image load(String title) { refreshChooser(title); File file = fc.showOpenDialog(null); if (file == null) { return null; } targetDirectory = file.getParent(); Image resultImage = null; try { BufferedImage bufferedImage = ImageIO.read(file); resultImage = SwingFXUtils.toFXImage(bufferedImage, null); } catch (IOException ex) { Logger.getLogger(FileManager.class.getName()).log(Level.SEVERE, null, ex); } return resultImage; } private static void refreshChooser(String title) { fc.setTitle(title); fc.setInitialDirectory(new File(targetDirectory)); fc.getExtensionFilters().addAll( new FileChooser.ExtensionFilter("PNG", "*.png")); } private static int getStartX(PixelReader reader, double canvasWidth, double canvasHeight) { //始点x座標 for (int x = 0; x < canvasWidth; x++) { for (int y = 0; y < canvasHeight; y++) { if (!reader.getColor(x, y).equals(Color.TRANSPARENT)) { return x; } } } return 0; } private static int getStartY(PixelReader reader, double canvasWidth, double canvasHeight) { //始点y座標 for (int y = 0; y < canvasHeight; y++) { for (int x = 0; x < canvasWidth; x++) { if (!reader.getColor(x, y).equals(Color.TRANSPARENT)) { return y; } } } return 0; } private static int getEndX(PixelReader reader, double canvasWidth, double canvasHeight) { int endX = 0; //終点x座標 for (int x = 0; x < canvasWidth; x++) { for (int y = 0; y < canvasHeight; y++) { if (!reader.getColor(x, y).equals(Color.TRANSPARENT)) { endX = x; } } } return endX; } private static int getEndY(PixelReader reader, double canvasWidth, double canvasHeight) { int endY = 0; //終点y座標 for (int y = 0; y < canvasHeight; y++) { for (int x = 0; x < canvasWidth; x++) { if (!reader.getColor(x, y).equals(Color.TRANSPARENT)) { endY = y; } } } return endY; } }